package com.xbongbong.pro.rabbitmq.binders;

import com.xbongbong.pro.rabbitmq.constant.AiAssistantBinderConstant;
import org.springframework.cloud.stream.annotation.Input;
import org.springframework.messaging.SubscribableChannel;
import org.springframework.stereotype.Service;

/**
 * @Author: hongxiao
 * @date: 2019-11-17 14:15
 */
@Service("consumerBinder")
public interface AiAssistantConsumerBinder {
    // ********************* crm ******************* **//

    /**
     * 客户
     */
    @Input(AiAssistantBinderConstant.CUSTOMER_INPUT)
    SubscribableChannel customerInput();
    /**
     * 联系人
     */
    @Input(AiAssistantBinderConstant.CONTACT_INPUT)
    SubscribableChannel contactInput();
    /**
     * 销售机会
     */
    @Input(AiAssistantBinderConstant.OPPORTUNITY_INPUT)
    SubscribableChannel opportunityInput();
    /**
     * 合同
     */
    @Input(AiAssistantBinderConstant.CONTRACT_INPUT)
    SubscribableChannel contractInput();
    /**
     * 退货退款
     */
    @Input(AiAssistantBinderConstant.REFUND_INPUT)
    SubscribableChannel refundInput();
    /**
     * 工作报告
     */
    @Input(AiAssistantBinderConstant.WORK_REPORT_INPUT)
    SubscribableChannel workReportInput();
    /**
     * 报价单
     */
    @Input(AiAssistantBinderConstant.QUOTATION_INPUT)
    SubscribableChannel quotationInput();

    // ********************* fundManagement ******************* **//
    /**
     * 回款
     */
    @Input(AiAssistantBinderConstant.PAYMENT_INPUT)
    SubscribableChannel paymentInput();
    /**
     * 发票
     */
    @Input(AiAssistantBinderConstant.INVOICE_INPUT)
    SubscribableChannel invoiceInput();
    /**
     * 付款
     */
    @Input(AiAssistantBinderConstant.PAY_PLAN_INPUT)
    SubscribableChannel payPlanInput();


    // ********************* jxc ******************* **//
    /**
     * 供应商
     */
    @Input(AiAssistantBinderConstant.SUPPLIER_INPUT)
    SubscribableChannel supplierInput();
    /**
     * 供应商联系人
     */
    @Input(AiAssistantBinderConstant.SUPPLIER_CONTACT_INPUT)
    SubscribableChannel supplierContactInput();
    /**
     * 采购合同
     */
    @Input(AiAssistantBinderConstant.PURCHASE_INPUT)
    SubscribableChannel purchaseInput();
    /**
     *　采购退货
     */
    @Input(AiAssistantBinderConstant.RETURNED_PURCHASE_INPUT)
    SubscribableChannel returnedPurchaseInput();
    /**
     * 出库单
     */
    @Input(AiAssistantBinderConstant.OUTSTOCK_INPUT)
    SubscribableChannel outstockInput();
    /**
     * 入库单
     */
    @Input(AiAssistantBinderConstant.INSTOCK_INPUT)
    SubscribableChannel instockInput();
    /**
     * 装配单
     */
    @Input(AiAssistantBinderConstant.ASSEMBLE_INPUT)
    SubscribableChannel assembleInput();
    /**
     * 调拔单
     */
    @Input(AiAssistantBinderConstant.TRANSFER_INPUT)
    SubscribableChannel transferInput();
    /**
     * 盘点单
     */
    @Input(AiAssistantBinderConstant.INVENTORY_INPUT)
    SubscribableChannel inventoryInput();
    /**
     * bom
     */
    @Input(AiAssistantBinderConstant.BOM_INPUT)
    SubscribableChannel bomInput();
    /**
     * 生产单
     */
    @Input(AiAssistantBinderConstant.PRODUCTION_ORDER_INPUT)
    SubscribableChannel productionOrderInput();

    // ********************* 产品 ******************* **//
    /**
     * 产品
     */
    @Input(AiAssistantBinderConstant.PRODUCT_INPUT)
    SubscribableChannel productInput();
    /**
     * 库存查询
     */
    @Input(AiAssistantBinderConstant.PRODUCT_STOCK_INPUT)
    SubscribableChannel productStockInput();
    /**
     * 库存预警
     */
    @Input(AiAssistantBinderConstant.PRODUCT_STOCK_WARNING_INPUT)
    SubscribableChannel productStockWarningInput();
    /**
     * 产品保质期
     */
    @Input(AiAssistantBinderConstant.PRODUCT_STOCK_GUARANTEE_INPUT)
    SubscribableChannel productStockGuaranteeInput();

    // ********************* 待（采购、生产、出库、入库） ******************* **//
    /**
     * 待采购
     */
    @Input(AiAssistantBinderConstant.WAIT_PURCHASE_INPUT)
    SubscribableChannel waitPurchaseInput();
    /**
     * 待生产
     */
    @Input(AiAssistantBinderConstant.WAIT_PRODUCE_INPUT)
    SubscribableChannel waitProduceInput();
    /**
     * 待出库
     */
    @Input(AiAssistantBinderConstant.WAIT_OUTSTOCK_INPUT)
    SubscribableChannel waitOutstockInput();
    /**
     * 待入库
     */
    @Input(AiAssistantBinderConstant.WAIT_INSTOCK_INPUT)
    SubscribableChannel waitInstockInput();
    /**
     * 市场活动
     */
    @Input(AiAssistantBinderConstant.MARKET_ACTIVITY_INPUT)
    SubscribableChannel marketActivityInput();
    /**
     * 销售线索
     */
    @Input(AiAssistantBinderConstant.CLUE_INPUT)
    SubscribableChannel clueInput();
    /**
     * 销售线索
     */
    @Input(AiAssistantBinderConstant.PAAS_INPUT)
    SubscribableChannel paasInput();
}
